package v1

import (
	"RoccBlog/global"
	"RoccBlog/model"
	"RoccBlog/model/req_resp"
	"RoccBlog/repository"
	"RoccBlog/util"
)

// DataCacheRepository 持久层
type DataCacheRepository struct {
	//实现增删改查接口
	repository.BaseRepository
}

// Create 新增数据库缓存
func (r *DataCacheRepository) Create(data model.DataCache) error {
	return global.DB.Create(&data).Error
}

// Delete 删除数据库缓存
func (r *DataCacheRepository) Delete(id int) error {
	return global.DB.Delete(&model.DataCache{}, id).Error
}

// Update 更新数据库缓存
func (r *DataCacheRepository) Update(data model.DataCache) error {
	return global.DB.Model(&data).Updates(&data).Error
}

// Select 查询数据库缓存
func (r *DataCacheRepository) Select(params req_resp.DataCacheReq, pageNum, pageSize int) (any, error) {
	var (
		//数据列表
		list []model.DataCache
		//统计
		count int64
		//错误
		err error
	)

	//查询来自 model.DataCache
	db := global.DB.Model(&model.DataCache{})

	//添加查询条件
	if params.Name != nil {
		// 缓存名称 模糊查询
		db = db.Where("name like concat('%',?,'%')", params.Name)
	}

	//查询条数
	err = db.Count(&count).Error
	if err != nil {
		return nil, err
	}

	//分页之后查询列表
	err = db.Offset((pageNum - 1) * pageSize).Limit(pageSize).Find(&list).Error
	//转换为 util.Page
	return util.ToPageInfo(count, pageSize, pageNum, list), err
}

// SelectById 通过Id查询数据库缓存
func (r *DataCacheRepository) SelectById(id int) (model.DataCache, error) {
	var DataCache model.DataCache
	err := global.DB.Take(&DataCache, id).Error
	return DataCache, err
}
